<?php
/*
  Released under the GNU General Public License

  Denne applikasjonen er oprinnelig portert fra oscommerce av
  Ingvald Haaland - ingvald@haaland.net

  Senere omskrevet og forbedret av Rune Rasmussen - http://www.syntaxerror.no
  Bl.a. for å gi fraktberegning også for brukere som ikke er innlogget,
  eller ikke har oppgitt postnummer. Samt forbedret fraktberegning, lagt inn oversettelse m.m.
  
  Senere omskrevet av Arne Unneland (http://www.unneland.com) til å bruke Bring Fraktguide (http://fraktguide.bring.no) i februar 2009. 
  - Modulen benytter Bring Fraktguide XML API. Dette er gratis og krever ikke registrering, men forutsetter aksept av bruksvilkår som er tilgjengelig på http://fraktguide.bring.no/. De som bruker denne modulen anbefales å registrere seg på Bring Fraktguide da kun registrerte brukere får beskjed om endringer i underliggende tjenester. Anbefaler også å lese informasjon om XML API da det er noen forutsetninger for de prisene som presenteres. Bla. må pakkene være forhåndsmeldt m/EDI.
  - Denne modulen er et privat initativ og på ingen måte er et Bring eller Posten produkt. Modulen brukes på eget ansvar og dersom man finner feil er det bare å fikse + melde tilbake til forumet på Zen Cart Norge :-)
  - Modulen leverer fraktkostnad for angitt produkt, samt produkttekster, hjelpetekster og transporttid. Noe av dette vises i den enkelte fraktmodul og kan tilpasses til den enkeltes behov.
  - Merk at det er gjort forenklinger i Zen Cart rundt fraktberegning. Det. er bla. kun fysisk vekt på pakkene, mens mange pakker prises etter fraktberegnet vekt (volum). Dette bør man ta hensyn til når man setter opp vekten på varene sine.
 
  Tips til forbedringer av denne modulen ligger i bring_fraktguide_common/bring_fraktguide_common.php

*/

//Only once - remove comment if you are not using bring_PADOREN.php
include_once 'bring_fraktguide_common/bring_fraktguide_common.php';

class bringpadoren {
    var $code, $title, $description, $icon, $enabled, $weightMassType;


	// class constructor
    function bringpadoren() {
		global $order, $db;
		$this->code = 'bringpadoren';
		$this->title = MODULE_SHIPPING_BRING_PADOREN_TEXT_TITLE;
		$this->description = MODULE_SHIPPING_BRING_PADOREN_TEXT_DESCRIPTION;
		$this->icon = DIR_WS_TEMPLATES . 'template_default/images/icons/shipping_posten_ny.gif';
		$this->tax_class = MODULE_SHIPPING_BRING_PADOREN_TAX_CLASS;
		$this->tax_basis = MODULE_SHIPPING_BRING_PADOREN_TAX_BASIS;
		$this->sort_order = MODULE_SHIPPING_BRING_PADOREN_SORT_ORDER;
		$this->weightMassType = MODULE_SHIPPING_BRING_PADOREN_WEIGHTMASSTYPE;


		if (zen_get_shipping_enabled($this->code)) {
		  $this->enabled = ((MODULE_SHIPPING_BRING_PADOREN_STATUS == 'True') ? true : false);
		}
		if ( ($this->enabled == true) && (((int)MODULE_SHIPPING_BRING_PADOREN_ZONE > 0) or ((int)MODULE_SHIPPING_BRING_PADOREN_ZONE2 > 0)) ) {
			$check_flag = false;
			$check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where ((geo_zone_id = '" . MODULE_SHIPPING_BRING_PADOREN_ZONE . "') or (geo_zone_id = '" . MODULE_SHIPPING_BRING_PADOREN_ZONE2 . "')) and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
			while (!$check->EOF) {
				if ($check->fields['zone_id'] < 1) {
					$check_flag = true;
					break;
				} elseif ($check->fields['zone_id'] == $order->delivery['zone_id']) {
					$check_flag = true;
					break;
				}
				$check->MoveNext();
			}

			if ($check_flag == false) {
				$this->enabled = false;
			}
	    }
	}

	// class methods
    function quote($method = '') {

		global $addressvalues, $shipping_weight, $order, $shipping_num_boxes, $db;
		$fra_nr = SHIPPING_ORIGIN_ZIP;

		if ($order->delivery['postcode'] > 0 ) {
			$til_nr = $order->delivery['postcode'];
		} else {
			$til_nr = $fra_nr;
		}

		$productCode = "PA_DOREN";
		$fraktArray = getValuesForProduct($productCode, $fra_nr, $til_nr, $shipping_weight, $shipping_num_boxes, $this->weightMassType, false); //se bring_fraktguide_common.php for detaljer og forutsetninger
		$this->quotes = getQuoteForFraktArray($productCode, $fraktArray, $this->code, MODULE_SHIPPING_BRING_PADOREN_FEETYPE, MODULE_SHIPPING_BRING_PADOREN_FEEVALUE, MODULE_SHIPPING_BRING_PADOREN_TEXT_TITLE);
		if ($fraktArray != null) {
			if ($this->tax_class > 0) {
				$this->quotes['tax'] = zen_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
			}
			if (zen_not_null($this->icon)) $this->quotes['icon'] = zen_image($this->icon, $this->title);
		
		}
		return $this->quotes;

    }

    function check() {
		global $db;
		if (!isset($this->_check)) {
			$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_BRING_PADOREN_STATUS'");
			$this->_check = $check_query->RecordCount();
		}
		return $this->_check;
    }

    function install() {
        global $db;
     	$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Aktivere', 'MODULE_SHIPPING_BRING_PADOREN_STATUS', 'True', 'Vil du tilby sending med denne fraktmetoden?', '6', '0', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now())");
     	$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Prisoverstyring - Prosent, bel&oslash;p, fastpris eller ingen?', 'MODULE_SHIPPING_BRING_PADOREN_FEETYPE', 'None', 'Angis en eventuelt prisoverstyring i prosent eller bel&oslash;p, eller vil du tilby en egendefinert fastpris?<br /><br />Percent = P&aring;slag i prosent (f.eks. +5%)<br />Amount = P&aring;slag i bel&oslash;p (f.eks. +5 NOK)<br />Fixed = Fastpris i bel&oslash;p (f.eks. 71.2)<br />None = Ingen prisjustering', '6', '0', 'zen_cfg_select_option(array(\'Percent\', \'Amount\', \'Fixed\', \'None\'), ', now())");
     	$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Prisoverstyring - Verdi', 'MODULE_SHIPPING_BRING_PADOREN_FEEVALUE', '0', 'Prisoverstyring for dette fraktvalget. Verdi angitt her legges til p&aring; pris fra Fraktguiden, dersom det er valg prosent eller bel&oslash;p ovenfor. Er derimot fastpris valgt vil denne gjelde uansett vekt og sted, og uavhengig av hva Fraktguiden angir.<br />Om p&aring;slag i prosent er valgt angis verdien f.eks. som 1.05 for 5% p&aring;slag. Om p&aring;slag i bel&oslash;p er valg angis bel&oslash;pet i valuta (f.eks. 5 for Kr. 5,- i p&aring;slag). Ved fastpris angis bel&oslash;pet som alle sendinger skal prises med. Merk at overstyring er eksl. mva.', '6', '0', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Avgiftsklasse', 'MODULE_SHIPPING_BRING_PADOREN_TAX_CLASS', '0', 'Bruk f&oslash;lgende avgiftsklasse p&aring; fraktpris.', '6', '0', 'zen_get_tax_class_title' , 'zen_cfg_pull_down_tax_classes(', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Avgiftsgrunnlag', 'MODULE_SHIPPING_BRING_PADOREN_TAX_BASIS', 'Shipping', 'P&aring; hvilket grunnlag blir fraktavgift beregnet. Valgene er<br />Sending - Basert p&aring; kundes leveringsadresse<br />Betaling - Basert p&aring; kundes fakturaadresse<br />Butikk - Basert p&aring; butikkadresse om faktura-/sendingssone tilsvarer butikksone', '6', '0', 'zen_cfg_select_option(array(\'Shipping\', \'Billing\', \'Store\'), ', now())");
     	$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Produktvekt', 'MODULE_SHIPPING_BRING_PADOREN_WEIGHTMASSTYPE', 'Kilo', 'Er produktvekt oppgitt i kilo eller gram?', '6', '0', 'zen_cfg_select_option(array(\'Kilo\', \'Gram\'), ', now())");
		$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Leveringssone', 'MODULE_SHIPPING_BRING_PADOREN_ZONE', '0', 'Om en soner er valgt vil fraktvalget bare v&aelig;re tilgjengelig for denne sonen, samt en eventuell leveringssone 2 valgt nedenfor.', '6', '0', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())");
		$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Leveringssone 2', 'MODULE_SHIPPING_BRING_PADOREN_ZONE2', '0', 'Om du &oslash;nsker &aring; tilby levering til en ekstre sone kan det velges her, f.eks for levering til Svalbard og Jan Mayen.', '6', '0', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())");
        $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sortering', 'MODULE_SHIPPING_BRING_PADOREN_SORT_ORDER', '140', 'Sorteringsrekkef&oslash;lge ved visning.', '6', '0', now())");
    }

    function remove() {
		global $db;
		$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key ='MODULE_SHIPPING_BRING_PADOREN_STATUS'");
		$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key ='MODULE_SHIPPING_BRING_PADOREN_FEETYPE'");
		$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key ='MODULE_SHIPPING_BRING_PADOREN_FEEVALUE'");
		$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key ='MODULE_SHIPPING_BRING_PADOREN_TAX_CLASS'");
		$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key ='MODULE_SHIPPING_BRING_PADOREN_TAX_BASIS'");
		$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key ='MODULE_SHIPPING_BRING_PADOREN_WEIGHTMASSTYPE'");
		$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key ='MODULE_SHIPPING_BRING_PADOREN_ZONE'");
		$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key ='MODULE_SHIPPING_BRING_PADOREN_ZONE2'");
		$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key ='MODULE_SHIPPING_BRING_PADOREN_SORT_ORDER'");
}

    function keys() {
    	return array('MODULE_SHIPPING_BRING_PADOREN_STATUS', 'MODULE_SHIPPING_BRING_PADOREN_FEETYPE', 'MODULE_SHIPPING_BRING_PADOREN_FEEVALUE', 'SHIPPING_ORIGIN_ZIP', 'MODULE_SHIPPING_BRING_PADOREN_WEIGHTMASSTYPE', 'MODULE_SHIPPING_BRING_PADOREN_TAX_CLASS', 'MODULE_SHIPPING_BRING_PADOREN_TAX_BASIS', 'MODULE_SHIPPING_BRING_PADOREN_ZONE', 'MODULE_SHIPPING_BRING_PADOREN_ZONE2', 'MODULE_SHIPPING_BRING_PADOREN_SORT_ORDER');
    }
}
?>
